package com.nuedu.corejava.ch5;

/**
 * 基本数据类型与引用数据类型再方法调用时的差别
 * @author admin
 *
 */


public class ReferenceParameter {
	public void change(int a){//参数是基本数据类型
		a=12;
		System.out.println("in method"+a);
	}	
	public void change(String str){//参数是一个对象类型，引用数据类型
		str="in method";
		System.out.println(str);
	}
	public void change(int[] array){//数组是一个引用数据类型
		array[0]=9;//修改数组内部的数据会影响实参的数据值，没有对数组重新赋值
		for(int i:array){
			System.out.print(i+"\t");
		}
		System.out.println();
	}
	public void change2(int[] array){//数组是一个引用数据类型
		array=new int[]{2,3,4,5,};//修改数组的引用，重新对数组进行赋值操作，
		for(int i:array){
			System.out.print(i+"\t");
		}
		System.out.println();
	}
	public static void main(String[] args) {
		ReferenceParameter rp=new ReferenceParameter();
		
		//1.基本数据类型
		int a=10;
		rp.change(a);//传值调用
		System.out.println("after change"+a);
		
		String str="Hello 引用数据类型";
		rp.change(str);//传引用调用，传递的参数是一个引用数据类型
		System.out.println("after change"+str);
		
		int[] array =new int[]{1,2,3,4,5,6};
		rp.change(array);//传引用调用，传递的参数是一个引用数据类型
		for(int k:array){
			System.out.print(k+"\t");
		}
		System.out.println();
		
		
		
		array =new int[]{1,2,3,4,5,6};
		rp.change2(array);//传引用调用，传递的参数是一个引用数据类型
		for(int k:array){
			System.out.print(k+"\t");
		}
		System.out.println();
		
		
		
	}

}
